home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / os2 / adaptor.zip / ADAPT.ZIP / adaptor / examples / laplace / forall.f < prev    next >
Text File  |  1993-03-23  |  1KB  |  40 lines

  1.       PROGRAM LAPLACE
  2. c     solving the laplace pde
  3.       REAL F(:,:), DF(:,:)
  4.       INTEGER MAXX, MAXY
  5.       REAL FMAX
  6.       INTEGER ITER
  7. c     read in sizes 
  8.       PRINT *,'MAXX = (e.g. 64) '
  9.       READ *,MAXX
  10.       PRINT *,'MAXY = (e.g. 64) '
  11.       READ *,MAXY
  12. c     allocating memory
  13.       ALLOCATE (F(MAXX,MAXY), DF(1:MAXX,MAXY))
  14. c     initialization
  15.       F = 2.
  16.       F(:,MAXY) = 1.
  17.       forall (i=2:maxx-1,j=2:maxy-1)
  18.          f(i,j) =  0
  19.       end forall
  20.       ITER = 0
  21.       FMAX = 1
  22. c     iteration
  23.       DF = 0
  24.       DO WHILE (FMAX .gt. 0.001)
  25.          ITER = ITER + 1
  26.          forall (i=2:maxx-1,j=2:maxy-1)
  27.            df(i,j) = (f(i,j+1) + f(i,j-1) + f(i-1,j) + f(i+1,j))*0.25
  28.      $               - f(i,j)
  29.          end forall
  30.          forall (i=2:maxx-1,j=2:maxy-1)
  31.             f(i,j) = f(i,j) + df(i,j)
  32.          end forall
  33.          DF = ABS(DF)
  34.          FMAX = MAXVAL (DF)
  35.          PRINT *,'iteration ',ITER,'  Max = ',FMAX
  36.       END DO
  37.       PRINT *, ITER, ' iterations needed'
  38.       deallocate (df, f)
  39.       END 
  40.